package pages;

import static org.openqa.selenium.support.ui.ExpectedConditions.*;

import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.ui.Select;

public class UserProfilePage extends InternalPage 
{
	public UserProfilePage(PageManager pages) 
	{
		super(pages);
	}
	
	@FindBy(name = "username")
	private WebElement usernameField;
	
	@FindBy(name = "email")
	private WebElement emailField;
  
	@FindBy(name = "password")
	private WebElement passwordField;
  
	@FindBy(name = "password2")
	private WebElement password2Field;
  
	private Select permissionDropdown() 
	{
		return new Select(driver.findElement(By.name("permission")));
	}
  
	public String getUsername() 
	{
		return usernameField.getAttribute("value");
	}

	public String getEmail() 
	{
		return emailField.getAttribute("value");
	}

	public UserProfilePage setEmailField(String text) 
	{
		emailField.sendKeys(text);
		return this;
	}

	public UserProfilePage setPassword(String text) 
	{
		passwordField.sendKeys(text);
		return this;
	}

	public UserProfilePage setPassword2(String text) 
	{
		password2Field.sendKeys(text);
		return this;
	}

	public String getRole() 
	{
		return permissionDropdown().getFirstSelectedOption().getText();
	}

	public UserProfilePage ensurePageLoaded() 
	{
		super.ensurePageLoaded();
		wait.until(presenceOfElementLocated(By.cssSelector("input#username[disabled]")));
		return this;
	}
}
